]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Don't show section headers for sections with no results and don't show page
authorMarina Zhurakhinskaya <marinaz@redhat.com>
Fri, 11 Sep 2009 22:59:31 +0000 (18:59 -0400)
committerMarina Zhurakhinskaya <marinaz@redhat.com>
Fri, 11 Sep 2009 23:30:11 +0000 (19:30 -0400)
controls if there is only one page of results

This makes the search results display more streamlined.

Make sure that we move the selection to a different section if we are going
from displaying a single section to displaying all and the section that
used to be displayed alone doesn't have any results.

js/ui/dash.js
js/ui/genericDisplay.js

index 41feb72036eba688293985d5f8061935ae82d175..5e14c5355cd82a9f9f9a8b45bef0616254749070 100644 (file)
@@ -641,10 +641,27 @@ Dash.prototype = {
                 for (var i = 0; i < this._searchSections.length; i++) {
                     let section = this._searchSections[i];
                     section.resultArea.display.setSearch(text);
-                    let itemCount = section.resultArea.display.getMatchedItemsCount() + "";
-                    section.header.countText.text = itemCount;
-                    if (this._searchResultsSingleShownSection == section.type)
-                        this._searchResultsSection.header.setCountText(itemCount);
+                    let itemCount = section.resultArea.display.getMatchedItemsCount();
+                    let itemCountText = itemCount + "";
+                    section.header.countText.text = itemCountText;
+
+                    if (this._searchResultsSingleShownSection == section.type) {
+                        this._searchResultsSection.header.setCountText(itemCountText);
+                        if (itemCount == 0) {
+                            section.resultArea.actor.hide();
+                        } else {
+                            section.resultArea.actor.show();
+                        }
+                    } else if (this._searchResultsSingleShownSection == null) {
+                        // Don't show the section if it has no results
+                        if (itemCount == 0) {
+                            section.header.actor.hide();
+                            section.resultArea.actor.hide();
+                        } else {
+                            section.header.actor.show();
+                            section.resultArea.actor.show();
+                        }
+                    }
 
                     // Refresh the selection when a new search is applied.
                     section.resultArea.display.unsetSelected();
@@ -880,11 +897,12 @@ Dash.prototype = {
                 // This will be the only section shown.
                 section.resultArea.display.selectFirstItem();
                 section.resultArea.controlBox.show();
-                let itemCount = section.resultArea.display.getMatchedItemsCount() + "";
+                let itemCount = section.resultArea.display.getMatchedItemsCount();
+                let itemCountText = itemCount + "";
                 section.header.actor.hide();
                 this._searchResultsSection.header.setTitle(section.title);
                 this._searchResultsSection.header.setBackLinkVisible(true);
-                this._searchResultsSection.header.setCountText(itemCount);
+                this._searchResultsSection.header.setCountText(itemCountText);
             } else {
                 // We need to hide this section.
                 section.header.actor.hide();
@@ -897,20 +915,35 @@ Dash.prototype = {
 
     _showAllSearchSections: function() {
         if (this._searchResultsSingleShownSection != null) {
+            let selectionSet = false;
             for (var i = 0; i < this._searchSections.length; i++) {
                 let section = this._searchSections[i];
                 if (section.type == this._searchResultsSingleShownSection) {
                     // This will no longer be the only section shown.
                     section.resultArea.display.displayPage(0);
                     section.resultArea.controlBox.hide();
-                    section.header.actor.show();
+                    let itemCount = section.resultArea.display.getMatchedItemsCount();
+                    if (itemCount != 0) {
+                        section.header.actor.show();
+                        section.resultArea.display.selectFirstItem();
+                        selectionSet = true;
+                    }
                     this._searchResultsSection.header.setTitle(_("SEARCH RESULTS"));
                     this._searchResultsSection.header.setBackLinkVisible(false);
                     this._searchResultsSection.header.setCountText("");
                 } else {
                     // We need to restore this section.
-                    section.header.actor.show();
-                    section.resultArea.actor.show();
+                    let itemCount = section.resultArea.display.getMatchedItemsCount();
+                    if (itemCount != 0) {
+                        section.header.actor.show();
+                        section.resultArea.actor.show();
+                        // This ensures that some other section will have the selection if the
+                        // single section that was being displayed did not have any items.
+                        if (!selectionSet) {
+                            section.resultArea.display.selectFirstItem();
+                            selectionSet = true;
+                        }
+                    }
                 }
             }
             this._searchResultsSingleShownSection = null;
index 219bf0eb5355ee7eab7b8e46dd0a51e74402279b..f8dfc5619b8d86db3c0d0cbf2d24b19bb9fc2b2e 100644 (file)
@@ -707,6 +707,9 @@ GenericDisplay.prototype = {
         if (resetDisplayControl) {
             this.displayControl.remove_all();
             let nPages = this._list.n_pages;
+            // Don't show the page indicator if there is only one page.
+            if (nPages == 1)
+                return;
             let pageNumber = this._list.page;
             for (let i = 0; i < nPages; i++) {
                 let pageControl = new Link.Link({ color: (i == pageNumber) ? DISPLAY_CONTROL_SELECTED_COLOR : ITEM_DISPLAY_DESCRIPTION_COLOR,